# -*- coding: utf-8 -*-
__author__ = 'lztkdr'
__date__ = '2020/4/2 16:11'

"""

	使用matplotlib呈现出店铺总数排名前10的国家
	
	使用matplotlib呈现出每个中国每个城市的店铺数量


数据来源：https://www.kaggle.com/starbucks/store-locations/data


"""

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# Pycharm输出窗口有省略号，数据显示不全解决方法
pd.set_option('display.max_rows', 10)
pd.set_option('display.max_columns', 200)
pd.set_option('display.width', 1000)

# 如果要显示中文标题和坐标表示，需要添加以下两行代码
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

print(
	"===========================================================================================================================")
file_path = './starbucks_store_worldwide.csv'
df = pd.read_csv(file_path)
# info()可以看出 df 总共有 25600 条数据 ，很多列都有 25600 ，很少列显示比 25600 少，说明 那些列中 有 NaN值。
print("df.info():\n", df.info())
print("========================================")
print(df.groupby(by='Country').count())
print("========================================")
# 通过列是 25600 条 的 Brand ，获取 单列个数
# 分组后，被分组的列变成 索引（数据变成Series类型，也就是1列数据，所以可以直接使用 sort_values），而 只需要count 其中1列 即可计算出数量
group = df.groupby(by='Country').count()['Brand']
print(group.values)
print(type(group))  # <class 'pandas.core.series.Series'>
print("========================================")
# ascending=False 倒序排序，取前 10 行数据
gpsort = group.sort_values(ascending=False)[:10]
print(gpsort)
print(type(gpsort))
print(gpsort.values)
print(gpsort.index)

print("========================================")
##使用matplotlib呈现出店铺总数排名前10的国家

# x = list(gpsort.index)
# y = gpsort.values
#
# plt.figure(figsize=(20, 8), dpi=80)
#
# plt.bar(x, y,color='orange')
#
# y_ticks = range(max(y))[::500]
# plt.yticks(y_ticks)
#
# plt.xlabel("国家")
# plt.ylabel("分店数量")
# plt.title("星巴克全球国家分布数量情况")
# plt.show()

print("========================================")
## 使用matplotlib呈现出每个中国每个城市的店铺数量
#
df = pd.read_csv(file_path)
df = df[df["Country"] == "CN"]
group = df.groupby(by='City').count()['Brand'].sort_values(ascending=False)[:25]

print("group:\n", group)

x = group.index
y = group.values

plt.figure(figsize=(15, 8), dpi=80)

# bar 条状宽度用  width
# plt.bar(x, y, color='orange', width=0.3)
# plt.yticks(list(range(max(y)))[::20])

# barh 条状宽度用  height
plt.barh(x, y, color='orange', height=0.3)
plt.xticks(list(range(max(y)))[::20])



plt.xlabel("城市")
plt.ylabel("分店数量")
plt.title("星巴克在中国的分店数据情况")

plt.grid()
plt.show()
